#pragma once

#define LCD_HOST SPI2_HOST
// 根据屏幕的参数来配置以下定义
#if 0

#define EXAMPLE_LCD_PIXEL_CLOCK_HZ (20 * 1000 * 1000)
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL 1
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL 0
#define EXAMPLE_PIN_NUM_DATA0 47 /* 对于 1 线 SPI 也称为 MOSI */
#define EXAMPLE_PIN_NUM_PCLK 21
#define EXAMPLE_PIN_NUM_CS 44
#define EXAMPLE_PIN_NUM_DC 43
#define EXAMPLE_PIN_NUM_RST -1
#define EXAMPLE_PIN_NUM_BK_LIGHT 48

// 水平和垂直像素数
#define EXAMPLE_LCD_H_RES 240
#define EXAMPLE_LCD_V_RES 240
// 用于表示命令和参数的位数
#define EXAMPLE_LCD_CMD_BITS 8
#define EXAMPLE_LCD_PARAM_BITS 8
#define EXAMPLE_LVGL_TICK_PERIOD_MS 2

#elif 1

#define EXAMPLE_LCD_PIXEL_CLOCK_HZ (20 * 1000 * 1000)
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL 0
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL !EXAMPLE_LCD_BK_LIGHT_ON_LEVEL
#define EXAMPLE_PIN_NUM_DATA0 7 /* 对于 1 线 SPI 也称为 MOSI */
#define EXAMPLE_PIN_NUM_PCLK 6
#define EXAMPLE_PIN_NUM_CS 5
#define EXAMPLE_PIN_NUM_DC 4
#define EXAMPLE_PIN_NUM_RST 8
#define EXAMPLE_PIN_NUM_BK_LIGHT 10

// 水平和垂直像素数
#define EXAMPLE_LCD_H_RES 240
#define EXAMPLE_LCD_V_RES 240
// 用于表示命令和参数的位数
#define EXAMPLE_LCD_CMD_BITS 8
#define EXAMPLE_LCD_PARAM_BITS 8
#define EXAMPLE_LVGL_TICK_PERIOD_MS 2

#else

#define EXAMPLE_LCD_PIXEL_CLOCK_HZ (20 * 1000 * 1000)
#define EXAMPLE_LCD_BK_LIGHT_ON_LEVEL 0
#define EXAMPLE_LCD_BK_LIGHT_OFF_LEVEL !EXAMPLE_LCD_BK_LIGHT_ON_LEVEL
#define EXAMPLE_PIN_NUM_DATA0 6 /* 对于 1 线 SPI 也称为 MOSI */
#define EXAMPLE_PIN_NUM_PCLK 5
#define EXAMPLE_PIN_NUM_CS 4
#define EXAMPLE_PIN_NUM_DC 10
#define EXAMPLE_PIN_NUM_RST 7
#define EXAMPLE_PIN_NUM_BK_LIGHT 8

// 水平和垂直像素数
#define EXAMPLE_LCD_H_RES 240
#define EXAMPLE_LCD_V_RES 240
// 用于表示命令和参数的位数
#define EXAMPLE_LCD_CMD_BITS 8
#define EXAMPLE_LCD_PARAM_BITS 8
#define EXAMPLE_LVGL_TICK_PERIOD_MS 2

#endif

void lcd_lvgl_task(void *pvParameter);

void play_tone_init();
void play_tone(int tone_index);